Skip to content

Phase 1 Health Checks

Run these commands to verify the full stack is healthy. Use after maintenance, power outages, or when something feels off.

Last updated: 2026-04-10


Quick Check (~30 seconds)

From Proxmox host shell:

# 1. Both LXCs running?
pct list

# Expected:
# VMID  Status   Name
# 101   running  edge-gateway
# 102   running  n8n-app
# 2. edge-gateway services healthy?
pct exec 101 -- docker compose -f /opt/edge-gateway/docker-compose.yml ps --format "table {{.Name}}\t{{.Status}}"

# Expected:
# NAME          STATUS
# npm           Up X hours
# cloudflared   Up X hours
# 3. n8n-app service healthy?
pct exec 102 -- docker compose -f /opt/n8n/docker-compose.yml ps --format "table {{.Name}}\t{{.Status}}"

# Expected:
# NAME   STATUS
# n8n    Up X hours
# 4. Tunnel healthy? (quick DNS check)
pct exec 101 -- dig n8n.exzentcg.com @1.1.1.1 +short

# Expected: CNAME → tunnel UUID → Cloudflare IPs

Full Check (~2 minutes)

From edge-gateway (CT 101)

pct enter 101
cd /opt/edge-gateway

# Docker services
docker compose ps

# Tunnel connections (should show 4 registered)
docker compose logs --tail 20 cloudflared | grep "Registered tunnel"

# Can reach n8n?
curl -s --connect-timeout 5 http://192.168.0.52:5678 -o /dev/null -w "HTTP %{http_code}\n"
# Expected: HTTP 200 or 302

# DNS works?
dig google.com +short +time=3
# Expected: IP addresses

# LAN blocked?
curl -s --connect-timeout 3 http://192.168.0.16 -o /dev/null -w "HTTP %{http_code}\n"
# Expected: HTTP 000 (timeout = correctly blocked)

From n8n-app (CT 102)

pct enter 102
cd /opt/n8n

# Docker services
docker compose ps

# n8n logs (check for errors)
docker compose logs --tail 20 n8n

# External HTTPS works?
curl -s --connect-timeout 5 https://api.github.com -o /dev/null -w "HTTP %{http_code}\n"
# Expected: HTTP 200

# LAN blocked?
curl -s --connect-timeout 3 http://192.168.0.16 -o /dev/null -w "HTTP %{http_code}\n"
# Expected: HTTP 000

From your desktop browser

  1. Visit https://n8n.exzentcg.com
  2. Cloudflare Access login page should appear
  3. Log in with Google or one-time PIN
  4. n8n editor should load

External Monitoring (optional)

Check from outside your network:

  • https://www.whatsmydns.net/ → query n8n.exzentcg.com CNAME → should resolve globally
  • Cloudflare dashboard → Zero Trust → Tunnels → exzentcg-homelab → Status: HEALTHY

What to Check After Specific Events

Event Check
Power outage / host reboot Quick Check (all 4 steps)
n8n update Full Check on CT 102 + browser test
NPM update Full Check on CT 101 + browser test
Firewall rule change LAN blocked tests on both CTs
Cloudflare DNS change DNS resolution + browser test
Router reboot DNS tests on both CTs